import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QFileDialog, QDialog, QWidget

class ExcelFileDialog(QDialog):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        layout = QVBoxLayout()

        # 创建按钮用于选择 Excel 文件
        excel_button = QPushButton('选择Excel文件', self)
        excel_button.clicked.connect(self.show_excel_dialog)

        # 将按钮添加到布局中
        layout.addWidget(excel_button)

        self.setLayout(layout)

    def show_excel_dialog(self):
        try:
            # 使用 QFileDialog 获取 Excel 文件的路径
            options = QFileDialog.Options()
            options |= QFileDialog.Option.ReadOnly  # 只读模式
            options |= QFileDialog.Option.DontUseNativeDialog  # 使用 QFileDialog 而不是系统原生对话框

            file_dialog = QFileDialog(self, options=options)
            file_dialog.setNameFilter("Excel 文件 (*.xlsx *.xls)")
            file_dialog.setDefaultSuffix("xlsx")

            # 获取选中的文件路径
            file_path, _ = file_dialog.getOpenFileName(self, "选择Excel文件", "", "Excel 文件 (*.xlsx *.xls)")

            if file_path:
                print("选择的Excel文件路径:", file_path)
                # 在这里你可以处理文件路径，进行进一步的操作

        except Exception as e:
            print("Error:", e)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        # 创建按钮用于打开选择 Excel 文件的子窗口
        open_dialog_button = QPushButton('打开选择文件窗口', self)
        open_dialog_button.clicked.connect(self.show_excel_file_dialog)

        # 将按钮添加到主窗口布局中
        layout = QVBoxLayout()
        layout.addWidget(open_dialog_button)

        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle('选择Excel文件示例')

    def show_excel_file_dialog(self):
        # 创建并显示选择 Excel 文件的子窗口
        excel_dialog = ExcelFileDialog()
        excel_dialog.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec())
